#include <pthread.h>
#include <stdio.h>

#include <iostream>
using std::cout;
using std::endl;

void* func(void* arg)
{
    int id = *(int*)arg;    // 将void*强转为int*然后解引用
    printf("线程 %d 跑起来了\n", id);

    // 随便搞点任务
    int* res = (int *)malloc(sizeof(int));
    *res = id * 100;
    return res;
}

void test(){
    pthread_t threads[3];
    int ids[3] = {1, 2, 3};
    void* res;

    // 创建3个线程
    for(int i = 0; i < 3; i++)
    {
        pthread_create(&threads[i], NULL, func, &ids[i]);
    }

    // 等待线程结束
    for(int i = 0; i < 3; i++)
    {
        pthread_join(threads[i], &res); // 等着thread[i]的return，拿结果
        printf("线程%d 退出，状态%d \n", i + 1, *(int*)res);
        free(res);
    }
}

int main()
{
    test();
    return 0;
}

